package com.maimang.platform.crm.service;

import com.dingtalk.api.response.*;

import java.util.List;

/**
 * @author Rocky
 * @version 1.0.0
 * @classname DingTalkUserService
 * @description <br>钉钉用户管理service</br>
 * @date 2019-09-22 13:38
 * @email jintaozhao@qq.com
 */
public interface DingTalkUserService {

	/**
	 * 获取部门用户
	 *
	 * @param deptId 部门id
	 * @param offset 分页偏移量
	 * @param size   分页大小
	 * @param order  支持分页查询，部门成员的排序规则，默认 是按自定义排序；
	 *               entry_asc：代表按照进入部门的时间升序，
	 *               entry_desc：代表按照进入部门的时间降序，
	 *               modify_asc：代表按照部门信息修改时间升序，
	 *               modify_desc：代表按照部门信息修改时间降序，
	 *               custom：代表用户定义(未定义时按照拼音)排序
	 * @return OapiUserSimplelistResponse
	 * @throws Exception
	 */
	OapiUserSimplelistResponse getSimpleList(Long deptId, Long offset, Long size, String order) throws Exception;


	/**
	 * 获取部门用户详情
	 *
	 * @param deptId 部门id
	 * @param offset 分页偏移量
	 * @param size   分页大小
	 * @param order  支持分页查询，部门成员的排序规则，默认 是按自定义排序；
	 *               entry_asc：代表按照进入部门的时间升序，
	 *               entry_desc：代表按照进入部门的时间降序，
	 *               modify_asc：代表按照部门信息修改时间升序，
	 *               modify_desc：代表按照部门信息修改时间降序，
	 *               custom：代表用户定义(未定义时按照拼音)排序
	 * @return OapiUserListbypageResponse
	 * @throws Exception
	 */
	OapiUserListbypageResponse listByPage(Long deptId, Long offset, Long size, String order) throws Exception;

	/**
	 * 获取管理员列表
	 *
	 * @return 管理员列表
	 * @throws Exception
	 */
	OapiUserGetAdminResponse getAdminList() throws Exception;


	/**
	 * 获取管理员通讯录权限范围
	 *
	 * @param userId 员工id
	 * @return OapiUserGetAdminScopeResponse
	 * @throws Exception
	 */
	OapiUserGetAdminScopeResponse getAdminScope(String userId) throws Exception;

	/**
	 * 根据unionid获取userid
	 *
	 * @param unionId 员工在当前开发者企业账号范围内的唯一标识，系统生成，固定值，不会改变
	 * @return OapiUserGetUseridByUnionidResponse
	 * @throws Exception
	 */
	OapiUserGetUseridByUnionidResponse getUseridByUnionid(String unionId) throws Exception;


	/**
	 * 获取用户详情
	 *
	 * @param userid
	 * @return
	 * @throws Exception
	 */
	OapiUserGetResponse getUserByUserid(String userid) throws Exception;

	/**
	 * 获取部门用户userid列表
	 *
	 * @param deptId 部门id
	 * @return
	 * @throws Exception
	 */
	List<String> getDeptMember(String deptId) throws Exception;

}
